package com.huawei;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Description: HJ64 MP3光标位置
 * <p>
 * 输入描述：
 * 输入说明：
 * 1 输入歌曲数量
 * 2 输入命令 U或者D
 * <p>
 * 输出描述：
 * 输出说明
 * 1 输出当前列表
 * 2 输出当前选中歌曲
 *
 * @author weiruibai.vendor
 * Date: 2022/8/24 10:38
 */
public class HJ64 {

    /**
     * case 1
     * 10
     * UUUU
     * 输出：
     * 7 8 9 10
     * 7
     * <p>
     * case 2
     * 83
     * UUDUDDDDUDUUDDDDUDD
     * 答案：
     * 3 4 5 6
     * 6
     *
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Integer musicSum = Integer.parseInt(br.readLine());
        Node head = buildNode(musicSum);
        ListNode linked = buildListNode(head);
        char[] operations = br.readLine().toCharArray();
        for (int i = 0; i < operations.length; i++) {
            char ch = operations[i];
            if (ch == 'U') {
                if (linked.cur == linked.head && linked.cur.val == 1) {
                    // 当前在列表的第一个位置，向上翻页回到最后一页
                    // 当前到最后一页的最后一个元素
                    linked.cur = linked.head.pre;
                    // 列表的最后也指向最后
                    linked.tail = linked.cur;
                    Node newHead = linked.cur;
                    newHead = newHead.pre.pre.pre;
                    linked.head = newHead;
                } else if (linked.cur == linked.head) {
                    // 普通操作，当前选项在当前可见列表的第一行，上移会影响当前列表
                    linked.cur = linked.cur.pre;
                    linked.head = linked.cur;
                    linked.tail = linked.tail.pre;
                } else {
                    // 普通操作，当前选项不在第一行，上移不影响当前列表
                    linked.cur = linked.cur.pre;
                }
            } else { // 'D'
                if (linked.cur == linked.tail && linked.cur.val == musicSum) {
                    // 当前列表在最后一页，且当前节点是最后一行记录，下一页回到首页
                    linked.cur = linked.tail.next;
                    linked.head = linked.cur;
                    linked.tail = linked.cur.next.next.next;
                } else if (linked.cur == linked.tail) {
                    // 普通操作，当前选项在当前可见列表的最后一行，下移会影响当前列表
                    linked.cur = linked.cur.next;
                    linked.tail = linked.cur;
                    linked.head = linked.head.next;
                } else {
                    // 普通操作
                    linked.cur = linked.cur.next;
                }
            }
        }
        head = linked.head;
        Node tail = linked.tail;
        while (head != tail) {
            System.out.print(head.val + " ");
            head = head.next;
        }
        System.out.println(head.val);
        System.out.println(linked.cur.val);
    }

    private static ListNode buildListNode(Node head) {
        ListNode listNode = new ListNode();
        listNode.cur = head;
        listNode.head = head;
        int i = 0;
        Node cur = head;
        while (i < 3) {
            cur = cur.next;
            i++;
        }
        listNode.tail = cur;
        return listNode;
    }

    private static Node buildNode(Integer musicSum) {
        Node head = new Node(1);
        Node curNode = head;
        Node node;
        for (int i = 2; i < musicSum; i++) {
            node = new Node(i);
            curNode.next = node;
            node.pre = curNode;
            curNode = node;
        }
        // 最后一个节点
        node = new Node(musicSum);
        curNode.next = node;
        node.pre = curNode;
        // 第一个和最后一个连接
        head.pre = node;
        node.next = head;
        return head;
    }

    static class ListNode {

        public Node cur;// 当前节点

        public Node head;// 头节点

        public Node tail;// 尾节点

        @Override
        public String toString() {
            return "ListNode{" +
                    "cur=" + cur +
                    ", head=" + head.val +
                    ", tail=" + tail.val +
                    '}';
        }
    }

    static class Node {
        public int val;

        public Node pre;// 前一个节点

        public Node next;// 前一个节点

        public Node(int val) {
            this.val = val;
        }

        @Override
        public String toString() {
            return "Node{" +
                    "val=" + val +
                    ", pre=" + pre.val +
                    ", next=" + next.val +
                    '}';
        }
    }
}
